package com.rj.bd.kj.hx.dm5;

import com.rj.bd.kj.utils.MyExceptionUtils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5 工具类，提供 MD5 加密的具体实现方法
 * @author yxh
 */
public class MD5Utils {
    /**s
     * @desc 对输入数据进行 MD5 加密
     * @param data 要加密的原始数据
     * @return 加密后的十六进制字符串表示的 MD5 值，如果发生异常则返回 null
     */
    public static String encrypt(String data) {
        try {
            // 获取 MD5 消息摘要对象
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算数据的哈希值
            byte[] hash = md.digest(data.getBytes());
            // 创建用于构建十六进制字符串的 StringBuilder
            StringBuilder hexString = new StringBuilder();
            for (byte b : hash) {
                // 将字节转换为十六进制表示
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) {
                    // 如果十六进制表示只有一位，前面补 0
                    hexString.append('0');
                }
                hexString.append(hex);
            }
            // 返回加密后的十六进制字符串
            return hexString.toString();

        } catch (Exception e) {
            MyExceptionUtils.handlerExceptions(e);
        }
        return null;
    }
}